Day 24: GitLab CI/CD 基本概念與工作流程
Day 25: GitLab Runners 配置與使用
Day 26: 使用 GitLab CI/CD 進行原始碼掃描及套件掃描
Day 27: 使用 GitLab CI/CD 進行自動化測試
Day 28: 如何在 GitLab CI/CD 中實現持續部署 (CD)
Day 29: GitLab CI/CD 與 Kubernetes 的集成實踐
因為免費方案之硬體需求關係,此章節會以GCP作為雲端平台來操作。
Flask 是一個輕量級的 Python Web 框架,設計簡單且易於使用,適合構建小型到中型的 Web 應用程序和 API。Flask 提供了路由、模板渲染和請求處理等基本功能,並透過插件擴展其功能,如數據庫集成、身份驗證等。由於其靈活性和模塊化設計,開發者可以自由選擇所需的工具和庫,非常適合快速原型開發和學習使用。
curl 是一個強大的命令行工具,用於在命令行或腳本中傳輸數據。它支持多種協議,如 HTTP、HTTPS、FTP 等。curl 常用來發送 HTTP 請求、下載文件、提交表單數據,甚至執行 API 調用。透過選項,可以自定義請求頭、處理重定向、進行身份驗證等。它廣泛應用於測試網路服務、檢查伺服器響應及自動化任務。
以flask來說
需要測試網頁伺服器是否存活
因此在ci腳本加入
test:
stage: test
script:
- apt-get update && apt-get install -y curl
- if curl -s http://localhost:5000 | grep "Hello, Flask!"; then echo "App is running"; else exit 1; fi
以curl指令測試服務存活並返回Hello, Flask!
並結合到原本有build及deploy的腳本內
stages:
- build
- deploy
- test
variables:
DOCKER_IMAGE: "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG"
DOCKER_HUB_REPO: your_dockerhub_username/your_repository_name
build:
stage: build
script:
- echo "$DOCKER_HUB_PASSWORD" | docker login -u "$DOCKER_HUB_USERNAME" --password-stdin
- docker build -t $DOCKER_IMAGE .
- docker push $DOCKER_IMAGE
deploy:
stage: deploy
script:
- docker run -d -p 5000:5000 --name my_flask_app $DOCKER_IMAGE
test:
stage: test
script:
- apt-get update && apt-get install -y curl
- if curl -s http://localhost:5000 | grep "Hello, Flask!"; then echo "App is running"; else exit 1; fi
- docker stop my_flask_app && docker rm my_flask_app
如果已經自備有單元測試腳本
也可以在ci腳本指向
stages:
- test
test_app:
stage: test
script:
- echo "Running unit tests"
- ./run_tests.sh
GitLab Runner 是 GitLab CI/CD 中執行 Pipeline 任務的代理程式。Pipeline 是一系列自動化的工作流程,包括編譯、測試、部署等階段。當程式碼推送至 GitLab 儲存庫時,Runner 會根據 .gitlab-ci.yml 設定自動執行各階段的任務。Runner 可以配置多種執行器,如 Shell、Docker、Kubernetes,來執行不同的任務。這使得開發過程自動化、高效且一致,適用於持續集成和部署流程。
因此測試只是pipeline的一環,具體的流水線可以根據需求訂製~